// package hn.cch.security;
//
// import hn.cch.constant.KeyConstant;
// import hn.cch.constant.StatusConstant;
// import hn.cch.constant.UrlConstant;
// import hn.cch.service.UserService;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.http.HttpStatus;
// import org.springframework.stereotype.Component;
// import org.springframework.util.StringUtils;
// import org.springframework.web.filter.OncePerRequestFilter;
//
// import javax.servlet.FilterChain;
// import javax.servlet.ServletException;
// import javax.servlet.http.Cookie;
// import javax.servlet.http.HttpServletRequest;
// import javax.servlet.http.HttpServletResponse;
// import java.io.IOException;
// import java.util.HashMap;
// import java.util.Map;
// import java.util.Objects;
//
// @Component
// public class SecurityRequestFilter extends OncePerRequestFilter {
//
//     @Autowired
//     private UserService userService;
//
//     @Override
//     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
//
//
//         // String exportToken = request.getHeader("X-Export-Token");
//         // // todo 跳过校验
//         // if (StringUtils.isEmpty(exportToken)) {
//         //     filterChain.doFilter(request, response);
//         //     return;
//         // }
//         //
//         // String requestURI = request.getRequestURI();
//         // if (UrlConstant.PASS_URL_LIST.contains(requestURI)) {
//         //     filterChain.doFilter(request, response);
//         //     return;
//         // }
//         //
//         // String sessionId = request.getRequestedSessionId();
//         // if (StringUtils.isEmpty(sessionId)) {
//         //     sessionId = request.getSession().getId();
//         // }
//         // if (!StringUtils.isEmpty(sessionId)) {
//         //     // todo 校验sessionId
//         //
//         //     response.setStatus(HttpStatus.UNAUTHORIZED.value());
//         //     response.getWriter().write(HttpStatus.UNAUTHORIZED.name());
//         // }
//         // // cookie
//         // Map<String, Cookie> cookieMap = new HashMap<>();
//         // Cookie[] cookies = request.getCookies();
//         // if (Objects.nonNull(cookies)) {
//         //     for (Cookie cookie : cookies) {
//         //         cookieMap.put(cookie.getName(), cookie);
//         //     }
//         // }
//
//         // 记住我
//         // Cookie cookie = cookieMap.get(KeyConstant.REMEMBER_ME_COOKIE_KEY);
//         // boolean rememberMe = Objects.nonNull(cookie);
//         // if (rememberMe) {
//         //     try {
//         //         String mobile = "";
//         //         UserDetailsImpl userDetails = userService.getUserDetails(mobile);
//         //         if (Objects.isNull(userDetails)) {
//         //             response.setStatus(StatusConstant.USER_NOT_EXIST);
//         //             return;
//         //         }
//         //         // todo 校验用户
//         //
//         //
//         //     } catch (Exception e) {
//         //
//         //     }
//         // }
//
//         filterChain.doFilter(request, response);
//
//     }
// }
